package org.biloxi.model.player;

import org.biloxi.player.PlayerID;

/**
 * Snapshot description of an instant in Game of a Player state.
 * 
 * @author Peter.WM.Wong@gmail.com
 */
public interface PlayerState {
		
	/**
	 * Indicates whether a Player has lost and is out of the game.
	 * @return true if Player has lost, false otherwise
	 */
	public boolean hasLost();

	/**
	 * Get Player's ID.
	 * @return
	 */
	public PlayerID getPlayerID();
	
	/**
	 * Gets cards in hand.
	 * @return
	 */
	public Zone getHand();
	
	/**
	 * Gets cards in-play.
	 * @return
	 */
	public Zone getInPlay();
	
	/**
	 * Gets cards in library.
	 * @return
	 */
	public Zone getLibrary();
	
	/**
	 * Returns lives remaining for player.
	 * @return
	 */
	public int getLives();

	/**
	 * Gets cards in graveyard.
	 * @return
	 */
	public Zone getGraveYard();
}
